import { isArray, isBoolean, isString } from "../../utils";
import { alignTypes } from "../../libs/config";
const errorTypes = ["none", "toast"];
const labelPositionTypes = ["left", "top"];
const labelAligns = ["left", "center ", "right"];
const requiredPositionTypes = ["left", "right"];


export const formProps = {
	// 当前form的需要验证字段的集合
	model: {
		type: Object
	},
	// 验证规则
	rules: {
		type: Object
	},
	// 有错误时的提示方式
	// toast-以"toast"提示的方式弹出错误信息，每次只弹出最前面的那个表单域的错误信息，
	// none-无提示
	errorType: {
		type: String,
		values: errorTypes
	},
	borderBottom: {
		type: Boolean,
		default:null
	},
	// label的位置，left-左边，top-上边
	labelPosition: {
		type: String,
		values: labelPositionTypes
	},
	// label的宽度，单位px
	labelWidth: {
		type: [String, Number]
	},
	// lable字体的对齐方式
	labelAlign: {
		type: String,
		values: labelAligns
	},
	labelStyle: {
		type: Object,
	},
	// 是否禁用该表单内的所有组件。 如果设置为 true, 它将覆盖内部组件的 disabled 属性
	disabled: {
		type: Boolean,
		default:null
	},
	requiredPosition: {
		type: String,
		values: requiredPositionTypes
	},
	inputAlign: {
		type: String,
		values: alignTypes
	},
};

export const formEmits = {
	// 任一表单项被校验后会触发validate函数
	validate: (prop: string, isValid: boolean, message: string) =>
		(isArray(prop) || isString(prop)) &&
		isBoolean(isValid) &&
		isString(message),
};
export type FormEmits = typeof formEmits;
